home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / brutil.arc / KEYSEND.ASM < prev    next >
Assembly Source File  |  1988-05-02  |  2KB  |  116 lines

  1. DATA    SEGMENT AT 40H
  2.     ORG    1AH
  3. BUFFER_HEAD    DW    ?
  4. BUFFER_TAIL    DW    ?
  5. KB_BUFFER    DW    16 DUP(?)
  6. KB_BUFFER_END    DW    ?
  7. DATA    ENDS
  8. CODE    SEGMENT PARA PUBLIC
  9.     ASSUME    CS:CODE,DS:CODE
  10.     ORG    100H
  11. START:    MOV    DI,OFFSET KBFR
  12.     MOV    SI,81H
  13.     SUB    BX,BX
  14. LOOP5:    PUSH    BX
  15.     SUB    BX,BX
  16.     SUB    DX,DX
  17. LOOP6:    LODSB
  18.     CMP    AL,'"'
  19.     JZ    LOOP9
  20.     CMP    AL,' '
  21.     JZ    LOOP7
  22.     CMP    AL,13
  23.     JZ    LOOP8
  24.     CMP    AL,'0'
  25.     JC    L5ERR
  26.     CMP    AL,'9'+1
  27.     JC    L5OK
  28.     AND    AL,5FH
  29.     CMP    AL,'A'
  30.     JC    L5ERR
  31.     CMP    AL,'G'
  32.     JNC    L5ERR
  33.     SUB    AL,7
  34. L5OK:    AND    AL,15
  35.     INC    BX
  36.     ROL    DX,1
  37.     ROL    DX,1
  38.     ROL    DX,1
  39.     ROL    DX,1
  40.     OR    DL,AL
  41.     JMP    LOOP6
  42. LOOP9:    LODSB
  43.     CMP    AL,'"'
  44.     JZ    LOOP10
  45.     CMP    AL,13
  46.     JZ    LOOP11
  47. LOOP13: SUB    AH,AH
  48.     INC    BX
  49.     STOSW
  50.     JMP    LOOP9
  51. LOOP10: CMP    AL,[SI]
  52.     JZ    LOOP12
  53.     MOV    AX,BX
  54.     POP    BX
  55.     ADD    BX,AX
  56.     JMP    LOOP5
  57. LOOP11: MOV    AX,BX
  58.     POP    BX
  59.     ADD    BX,AX
  60.     MOV    AX,13
  61.     STOSW
  62.     INC    BX
  63.     JMP    SHORT EXIT
  64. LOOP12: LODSB
  65.     JMP    LOOP13
  66. LOOP7:    OR    BX,BX
  67.     JZ    LOOP6
  68.     POP    BX
  69.     MOV    AX,DX
  70.     STOSW
  71.     INC    BX
  72.     JMP    LOOP5
  73. LOOP8:    OR    BX,BX
  74.     POP    BX
  75.     JZ    EXIT
  76.     MOV    AX,DX
  77.     STOSW
  78.     INC    BX
  79.     JMP    SHORT EXIT
  80. L5ERR:    POP    BX
  81.     RET
  82. EXIT:    MOV    SI,OFFSET KBFR
  83.     MOV    CX,BX
  84.     MOV    AX,40H
  85.     MOV    DS,AX
  86.     ASSUME    DS:DATA
  87.     MOV    BX,BUFFER_TAIL
  88.     CLI
  89.     PUSH    CX
  90. LOOP2:    LODS    CS:KBFR
  91.     MOV    [BX],AX
  92.     INC    BX
  93.     INC    BX
  94.     CMP    BX,OFFSET KB_BUFFER_END
  95.     JNE    LOOP3
  96.     MOV    BX,OFFSET KB_BUFFER
  97. LOOP3:    MOV    BUFFER_TAIL,BX
  98.     LOOP    LOOP2
  99.     STI
  100.     MOV    AX,CS
  101.     MOV    DS,AX
  102.     POP    CX
  103. LOOP4:    PUSH    CX
  104.     MOV    AH,2
  105.     MOV    DL,13
  106.     INT    21H
  107.     POP    CX
  108.     LOOP    LOOP4
  109.     RET
  110. KBFR    DW    16 DUP(0)
  111. CODE    ENDS
  112.      END    START
  113. OP    CX
  114. LOOP4:    PUSH    CX
  115.     MOV    AH,2
  116.     MOV